var n=100

function foo1(){
    console.log(n) //2.100
}
function foo2(){
    var n=200
    console.log(n) //1.200
    foo1()
}
foo2()
console.log(n)  //3.100

//代码分析
/* 

创建一个全局对象GO:{n:undefined,foo1:0x334, foo2:0x335}
执行代码:{n:100,foo1:0x334, foo2:0x335,n:100}

创建了一个foo1对象：foo1:{parent[scope]:GO，函数体} 
创建了一个foo2对象：foo2:{parent[scope]:GO，函数体}

foo2()对象     编译阶段 AO对象{n:undefined,foo1：0x334}   
               执行代码      {n:200,foo1：0x334}

foo1()对象     编译阶段   AO对象{n:undefined}  
              执行函数    AO对象{n:100}  自己作用域找不到，去父级作用域GO中找(编译阶段已经确定，和调用位置无关)

*/